package edu.uoc.vmerinom.tfc.backup;

import java.text.SimpleDateFormat;
import java.util.List;

import javax.persistence.EntityManager;

import edu.uoc.vmerinom.tfc.domain.Usuario;

public class Usuarios {
	@SuppressWarnings("unchecked")
	public static String backup(EntityManager entityManager) {
		StringBuffer backup = new StringBuffer();
		List<Usuario> usuarios = entityManager.createQuery("from Usuario order by id").getResultList();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		for (Usuario usuario : usuarios) {
			StringBuffer insert = new StringBuffer();
			insert.append("insert into usuarios (id, creado, modificado, alta, baja, user, pass, ");
			insert.append("dni, nombre, primer_apellido, segundo_apellido, localidad, provincia, pais, ");
			insert.append("domicilio, cp, movil, fijo, email, web, facebook, twitter, nacimiento, ");
			insert.append("sexo, perfil) values (");
			insert.append(usuario.getId());
			insert.append(", current_timestamp, current_timestamp, '");
			insert.append(sdf.format(usuario.getAlta()));
			insert.append("', ");
			if (usuario.getBaja() != null) {
				insert.append("'");
				insert.append(sdf.format(usuario.getBaja()));
				insert.append("', '");
			} else {
				insert.append("null, '");
			}
			insert.append(usuario.getUser());
			insert.append("', '");
			insert.append(usuario.getPass());
			insert.append("', '");
			insert.append(usuario.getDni());
			insert.append("', '");
			insert.append(usuario.getNombre());
			insert.append("', '");
			insert.append(usuario.getPrimerApellido());
			insert.append("', ");
			if (usuario.getSegundoApellido() != null) {
				insert.append("'");
				insert.append(usuario.getSegundoApellido());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getLocalidad() != null) {
				insert.append("'");
				insert.append(usuario.getLocalidad());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getProvincia() != null) {
				insert.append("'");
				insert.append(usuario.getProvincia());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getPais() != null) {
				insert.append("'");
				insert.append(usuario.getPais());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getDomicilio() != null) {
				insert.append("'");
				insert.append(usuario.getDomicilio());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getCp() != null) {
				insert.append("'");
				insert.append(usuario.getCp());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getMovil() != null) {
				insert.append("'");
				insert.append(usuario.getMovil());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getFijo() != null) {
				insert.append("'");
				insert.append(usuario.getFijo());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getEmail() != null) {
				insert.append("'");
				insert.append(usuario.getEmail());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getWeb() != null) {
				insert.append("'");
				insert.append(usuario.getWeb());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getFacebook() != null) {
				insert.append("'");
				insert.append(usuario.getFacebook());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getTwitter() != null) {
				insert.append("'");
				insert.append(usuario.getTwitter());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getNacimiento() != null) {
				insert.append("'");
				insert.append(sdf.format(usuario.getNacimiento()));
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			if (usuario.getSexo() != null) {
				insert.append("'");
				insert.append(usuario.getSexo());
				insert.append("', ");
			} else {
				insert.append("null, ");
			}
			insert.append(usuario.getPerfil().getId());
			insert.append(");\n");
			backup.append(insert);
		}
		return backup.toString();
	}
}
